package com.ht.web360.ObjServer.dao;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ht.web360.base.dto.ObjInfo.dto.ObjInfoDto;
import com.ht.web360.base.enums.ObjType;
import lombok.Data;

import java.time.LocalDateTime;

@Data
@TableName("obj_info")
public class ObjInfo {
    @TableId
    Long id;            // 主键

    String name;        // 对象名称

    String preview;     // 对象预览

    String link;        // 对象链接

    ObjType type;       // 对象类型

    @TableField(fill = FieldFill.INSERT)
    Long creatorId;     // 创建对象的用户

    @TableField(fill = FieldFill.INSERT)
    LocalDateTime createTime;   // 创建时间

    @TableField(fill = FieldFill.INSERT_UPDATE)
    LocalDateTime updateTime;   // 更新时间

    public ObjInfoDto toDto() {
        ObjInfoDto dto = new ObjInfoDto();
        dto.setId(this.id.toString());
        dto.setName(this.name);
        dto.setPreview(this.preview);
        dto.setLink(this.link);
        dto.setType(this.type);
        dto.setCreatorId(this.creatorId.toString());
        dto.setCreateTime(this.createTime);
        dto.setUpdateTime(this.updateTime);
        return dto;
    }

    public static ObjInfo fromDto(ObjInfoDto objInfoDto) {
        ObjInfo objInfo = new ObjInfo();
        try {
            objInfo.id = Long.valueOf(objInfoDto.getId());
        } catch (NumberFormatException e) {
            objInfo.id = null;
        }
        objInfo.name = objInfoDto.getName();
        objInfo.preview = objInfoDto.getPreview();
        objInfo.link = objInfoDto.getLink();
        objInfo.type = objInfoDto.getType();
        try {
            objInfo.creatorId = Long.valueOf(objInfoDto.getCreatorId());
        } catch (NumberFormatException e) {
            objInfo.creatorId = null;
        }
        objInfo.createTime = objInfoDto.getCreateTime();
        objInfo.updateTime = objInfoDto.getUpdateTime();
        return objInfo;
    }
}
